package com.jpf.dao;
import java.sql.*;
public class DatabaseConnection {
	private static final long serivalVersionUID=1L;//用来表明实现序列化类的不同版本间的兼容性。
	private static final String driver="com.mysql.jdbc.Driver";//驱动程序名
	private static final String dburl="jdbc:mysql://localhost:3306/pcshop";//数据库的路径
	private static final String username="root";//用户名
	private static final String password="xjl6593632";//密码
	private Connection conn = null;//声明数据库连接对象
	private PreparedStatement pstmt = null;
	private ResultSet rs = null;
	public DatabaseConnection() {
		try {
			Class.forName(driver);//加载驱动程序
			this.conn=DriverManager.getConnection(dburl,username,password);//连接数据库
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	public Connection getConnection() {
		return this.conn; //返回本类对象中的Connection对象
	}
	public void close() {
		if (rs != null) {//表示现在有结果
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (pstmt != null) {//表示现在有对象
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(this.conn != null) { //表示现在有连接对象
			try {
				this.conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	public ResultSet executeQuery(String preparedSql, Object[] param) {
		// 处理SQL,执行SQL
		try {
			// 得到PreparedStatement对象
			pstmt = conn.prepareStatement(preparedSql);
			if (param != null) {
				for (int i = 0; i < param.length; i++) {
					// 为预编译sql设置参数
					pstmt.setObject(i + 1, param[i]);
				}
			}
			// 执行SQL语句
			rs = pstmt.executeQuery();
		} catch (SQLException e) {
			// 处理SQLException异常
			e.printStackTrace();
		}
		return rs;
	}
	public int executeUpdate(String preparedSql, Object[] param) {
		 
		int num = 0;
		// 处理SQL,执行SQL
		try {
			this.getConnection();
			// 得到PreparedStatement对象
			pstmt = conn.prepareStatement(preparedSql);
			if (param != null) {
				for (int i = 0; i < param.length; i++) {
					// 为预编译sql设置参数
					pstmt.setObject(i + 1, param[i]);
				}
			}
			// 执行SQL语句
			num = pstmt.executeUpdate();
		} catch (SQLException e) {
			// 处理SQLException异常
			e.printStackTrace();
		}finally {
			//this.close();     //Ajax并发请求时会因为连接关闭发生异常
		}
		return num;
	}
  }
